const express = require('express');
const router = express.Router();
const { body } = require('express-validator');
const messageController = require('../controllers/messageController');
const { authenticate, isAdmin } = require('../middlewares/authMiddleware');
const { validate } = require('../middlewares/validationMiddleware');
const multer = require('multer');

// 配置文件上传中间件
const upload = multer({
  dest: 'uploads/',
  limits: {
    fileSize: 10 * 1024 * 1024 // 限制文件大小为10MB
  }
});

// 发送消息
router.post(
  '/send',
  [
    authenticate,
    body('contactId').notEmpty().withMessage('联系人ID是必须的'),
    body('content').notEmpty().withMessage('消息内容是必须的'),
    validate
  ],
  messageController.sendMessage
);

// 发送图片
router.post(
  '/send-image',
  [
    authenticate,
    upload.single('image')
  ],
  messageController.sendImage
);

// 发送文件
router.post(
  '/send-file',
  [
    authenticate,
    upload.single('file')
  ],
  messageController.sendFile
);

// 发送位置信息
router.post(
  '/send-location',
  [
    authenticate,
    body('contactId').notEmpty().withMessage('联系人ID是必须的'),
    body('latitude').notEmpty().withMessage('纬度是必须的'),
    body('longitude').notEmpty().withMessage('经度是必须的'),
    validate
  ],
  messageController.sendLocation
);

// 发送预设文件
router.post(
  '/send-preset',
  [
    authenticate,
    body('contactId').notEmpty().withMessage('联系人ID是必须的'),
    body('presetId').notEmpty().withMessage('预设文件ID是必须的'),
    validate
  ],
  messageController.sendPresetFile
);

// 标记消息为已读
router.post(
  '/:messageId/read',
  authenticate,
  messageController.markAsRead
);

// 标记聊天为已读
router.post(
  '/chats/:contactId/read',
  authenticate,
  messageController.markChatAsRead
);

// 搜索消息
router.get(
  '/search',
  authenticate,
  messageController.searchMessages
);

// 获取聊天历史记录
router.get(
  '/:contactId',
  authenticate,
  messageController.getChatHistory
);

module.exports = router; 